All files / src/types api.ts

100% Statements 1/1
100% Branches 0/0
100% Functions 0/0
100% Lines 1/1

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52                                                        1x                                              
// API response and error types
 
export interface ApiError {
  error: string;
  details: string;
  timestamp: string;
}
 
/**
 * ApiResponse / ApiResult discriminated union
 * - success: true  -> data is present, error is not provided
 * - success: false -> error is present, data is not provided
 *
 * This lets TypeScript narrow `result` after `if (result.success)` checks
 * so callers don't need to repeatedly guard `result.data` or `result.error`.
 */
export type ApiResponse<T> =
  | { success: true; data: T; error?: undefined }
  | { success: false; data?: undefined; error: ApiError };
 
export type ApiResult<T> = ApiResponse<T>;
 
export interface ValidationError {
  field: string;
  message: string;
}
 
// HTTP status codes for error handling
export enum HttpStatusCode {
  OK = 200,
  CREATED = 201,
  BAD_REQUEST = 400,
  UNAUTHORIZED = 401,
  FORBIDDEN = 403,
  NOT_FOUND = 404,
  CONFLICT = 409,
  UNPROCESSABLE_ENTITY = 422,
  TOO_MANY_REQUESTS = 429,
  INTERNAL_SERVER_ERROR = 500,
  BAD_GATEWAY = 502,
  SERVICE_UNAVAILABLE = 503
}
 
export interface PaginatedResponse<T> {
  data: T[];
  total: number;
  page: number;
  limit: number;
  has_more: boolean;
  total_pages: number;
}